package smartvillage.controller;

import io.jsonwebtoken.Claims;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import smartvillage.mapper.QuestionnaireMapper;
import smartvillage.pojo.Questionnaire;
import smartvillage.result.Result;
import smartvillage.utils.JWTUtil;

import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;

@RestController
@RequestMapping("/questionnaire")
@CrossOrigin
@Slf4j
public class QuestionnaireController {

    @Autowired
    QuestionnaireMapper questionnaireMapper;

    //查看所有统计调查
    @GetMapping
    public Result<List<Questionnaire>> getAllQuestionnaire(){
        List<Questionnaire> allQuestionnaire = questionnaireMapper.getAllQuestionnaire();
        return Result.success(allQuestionnaire);
    }

    //根据id查询统计调查
    @GetMapping("/{id}")
    public Result<Questionnaire> getQuestionnairebyId(@PathVariable Integer id){
        Questionnaire questionnaireById = questionnaireMapper.getQuestionnaireById(id);
        return Result.success(questionnaireById);
    }

    //增加统计调查
    @PostMapping
    public Result addQuestionnaireby(@RequestBody Questionnaire questionnaire, HttpServletRequest request){
        //设置当前的日期和时间
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yy-MM-dd HH:mm:ss");
        String formattedDateTime = now.format(formatter);
        questionnaire.setDatetime(formattedDateTime);
        //设置发起统计调查者的id
        String token = request.getHeader("token");
        Claims claims = JWTUtil.parseJWT("Rural", token);
        Integer adminId = Integer.parseInt(claims.get("tele").toString());
        questionnaire.setAdmin(adminId);
        //设置调查状态
        questionnaire.setState(1);
        questionnaireMapper.addQuestionnaire(questionnaire);
        return Result.success();
    }

    //启用/停用统计调查
    @PutMapping("/{id}")
    public Result updateQuestionnaire(@PathVariable Integer id){
        //根据id查询统计调查
        Questionnaire questionnaire = questionnaireMapper.getQuestionnaireById(id);
        if(questionnaire.getState() == 1){//启用中，将会停用
            questionnaireMapper.updateQuestionnaire(0, id);
        } else {//停用中，将会启用
            questionnaireMapper.updateQuestionnaire(1, id);
        }
        return Result.success();
    }

    //删除统计调查
    @DeleteMapping("/{id}")
    public Result deleteQuestionnaire(@PathVariable Integer id){
        questionnaireMapper.deleteQuestionnaire(id);
        return Result.success();
    }
}
